package com.micro.user.dto.response;

import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 用户登录响应DTO
 * 
 * @author micro
 * @since 1.0.0
 */
@Data
public class LoginResponse {

    /**
     * 用户ID
     */
    private Long userId;

    /**
     * 用户名
     */
    private String username;

    /**
     * 真实姓名
     */
    private String realName;

    /**
     * 用户类型
     */
    private Integer userType;

    /**
     * 用户类型描述
     */
    private String userTypeDesc;

    /**
     * 状态
     */
    private Boolean active;

    /**
     * 余额
     */
    private BigDecimal balance;

    /**
     * 最后登录时间
     */
    private LocalDateTime lastLoginTime;

    /**
     * 登录令牌
     */
    private String token;

    /**
     * 令牌过期时间
     */
    private LocalDateTime tokenExpireTime;

    /**
     * 登录成功消息
     */
    private String message;

    /**
     * 登录时间
     */
    private LocalDateTime loginTime;

    /**
     * 构造函数
     */
    public LoginResponse() {
        this.loginTime = LocalDateTime.now();
        this.message = "登录成功";
    }

    /**
     * 设置用户类型描述
     */
    public void setUserTypeDesc(String userTypeDesc) {
        this.userTypeDesc = userTypeDesc;
    }

    /**
     * 获取用户类型描述
     */
    public String getUserTypeDesc() {
        if (userTypeDesc != null) {
            return userTypeDesc;
        }
        
        if (userType == null) {
            return "未知";
        }
        
        switch (userType) {
            case 0: return "普通用户";
            case 1: return "学生";
            case 2: return "特殊群体";
            case 3: return "管理员";
            default: return "未知";
        }
    }
}
